//
//  MensaWidget.m
//  MensaWidget
//
//  Created by Stephan Arlt on 12.02.11.
//  Copyright 2011 University of Freiburg. All rights reserved.
//

#import "MensaWidget.h"

@implementation MensaWidget

@synthesize mensen;

//////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////
- (BOOL) parse
{
	if ( nil != mensen )
	{
		// reset Mensen
		[mensen release];
	}
	
	// init Mensen
	mensen = [[NSMutableArray alloc] init];
	
	// setup parser
	NSURL *url = [[NSURL alloc] initWithString:@"http://www.star-elektrik.de/mensawidget/mensen/xml.php"];
	NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
	[url release];
	
	// run parser
	[parser setDelegate: self];
	BOOL result = [parser parse];
	[parser release];
	
	return result;
}

//////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
													  namespaceURI:(NSString *)namespaceURI
													  qualifiedName:(NSString *)qualifiedName
													  attributes:(NSDictionary *)attributeDict
{
	if ( [elementName isEqualToString:@"mensa"] )
	{
		// create Mensa and assign Name and Adresse
		currentMensa = [[Mensa alloc] init];
		currentMensa.name = [attributeDict objectForKey:@"name"];
		currentMensa.adresse = [attributeDict objectForKey:@"adresse"];
		currentEssen = [NSMutableString string];
	}
}

//////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
	if ( currentMensa != nil )
	{
		// add Essen
		[currentEssen appendString:string];
	}
}

//////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
													namespaceURI:(NSString *)namespaceURI
													qualifiedName:(NSString *)qName
{
	if ( [elementName isEqualToString:@"mensa"] )
	{
		// assign Essen
		currentMensa.essen = [currentEssen stringByTrimmingCharactersInSet:
								[NSCharacterSet whitespaceAndNewlineCharacterSet]];
		
		// add Mensa
		[mensen addObject:currentMensa];
		
		// reset
		[currentMensa release];
		currentMensa = nil;
	}
}

//////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////
- (void) dealloc
{
	self.mensen = nil;
	[super dealloc];
}

@end
